package cron

import (
	"log"
	"lottery/comm"
	"lottery/services"
	"lottery/utils"
	"time"
)

func ConfigAppOneCron() {
	go resetAllGiftPrizeData()
	go distributionAllGiftPool()
}

func resetAllGiftPrizeData() {
	giftService := services.NewGiftService()
	nowTime := comm.NowUnix()
	// 不使用缓存，数据库读取
	list := giftService.GetAll(false)
	for _, giftInfo := range list {
		// 满足条件重置发奖计划
		if giftInfo.PrizeTime > 0 &&
			(giftInfo.PrizeData == "" ||
				giftInfo.PrizeEnd <= nowTime) {
			// 作为后台服务，执行时加上相关日志信息
			log.Println("crontab start utils.ResetGiftPrizeData giftInfo = ", giftInfo)
			utils.ResetGiftPrizeData(&giftInfo, giftService)
			// 重置的过程会改写数据库, 意味着缓存失效，重新设定缓存
			giftService.GetAll(true)
			log.Println("crontab stop utils.ResetGiftPrizeData giftInfo = ", giftInfo)
		}
	}

	// 加入定时器，每5分钟，执行一次
	time.AfterFunc(5*time.Minute, resetAllGiftPrizeData)
}

// 实现填充奖品的服务
func distributionAllGiftPool() {
	// 日志
	log.Println("crontab start utils.DistributionGiftPool")
	num := utils.DistributionGiftPool()
	log.Println("crontab end utils.DistributionGiftPool, num=", num)

	// 每分钟执行一次
	time.AfterFunc(time.Minute, distributionAllGiftPool)
}
